package main


import (
	"encoding/json"
	"fmt"
	"math/rand"
	"os"
	"time"
)

func main()  {
	userinfo := read()
	stu_name := []string{"粟檬", "陈颖婷", "史伟明", "杨媛", "项鼎"}
	var option string
	var num int

	for true{
		fmt.Println("按任意键开始:")
		fmt.Scanln(&option)
		if option == "q" || len(stu_name) == 0{
			if len(stu_name) == 0 {
				fmt.Println("学生已全部抽取完")
			}else{
				fmt.Println("按q退出")
			}
			break
		}
		//时间戳 从1970年1月1日到现在所经历的秒数
		//加入随机种子
		rand.Seed(time.Now().UnixNano())
		num = int(rand.Intn((len(stu_name)-1)-0+1) + 0)
		getName := stu_name[num]
		userinfo[getName] = userinfo[getName] + 1
		fmt.Printf("请%s同学回答问题\n", getName)
		fmt.Printf("%s同学被点名次数为：%d\n", stu_name[num], userinfo[getName])
		stu_name = append(stu_name[:num], stu_name[(num+1):]...)
		fmt.Printf("剩余名单列表为：%s\n", stu_name)
		write(userinfo)  //写入文件
	}
}

//读取文件
func read() map[string]int {
	userFile, err := os.ReadFile("./rollcall.json")
	if err != nil {
		fmt.Println("Json文件读取错误：", err)
		return make(map[string]int)  //文件不存在，返回一个空map
	}
	//json --> map
	var userinfo map[string]int
	err = json.Unmarshal([]byte(userFile), &userinfo)
	if err != nil {
		fmt.Println("Json转换为map出错:", err)
	}

	return userinfo
}

//写入文件
func write(userinfo map[string]int) {
	// map->json
	userJsonFile, err := json.MarshalIndent(userinfo, "", "")
	if err != nil {
		fmt.Println("Map转换错误:", err)
	}
	// 写入
	err = os.WriteFile("./rollCall.json", userJsonFile, 0644)
	if err != nil {
		fmt.Println("Json写入错误:", err)
	}
}
